package eva.savant.business.material.view

import eva.savant.businessobject.mt.Kardex
import eva.savant.businessobject.gl.Persona
import eva.savant.businessobject.mt.Almacenero
import eva.savant.businessobject.mt.AlmaceneroAlmacen

import javax.faces.bean.ManagedBean
import javax.faces.bean.SessionScoped
import javax.annotation.PostConstruct
import javax.faces.convert.Converter

@SessionScoped
@ManagedBean(name = 'IIKardexPersona')
public class IIKardexPersona extends Bean{

  Date dateIni, dateEnd

  def lsResumen, lsAlmacen, almacenId, persona

  @PostConstruct
  public void cleanEntity() {

    almacenId= null

    persona= new Persona()

    dateIni= dateEnd= new Date()

    lsEntity= new ArrayList<Kardex>()

    lsResumen= new ArrayList()


    def almacenero= get(Almacenero,'usuario.id=?',usuario.id)

    if(almacenero == null) { addErrorMessage 'El usuario no esta registrado como almacenero'; return }


    lsAlmacen= find(AlmaceneroAlmacen,'almacen: almacenero.id=?',almacenero.id)

    if(lsAlmacen?.size() < 1) { addErrorMessage 'El usuario no tiene asignado almacenes' }
  }

  public List findLsEntity() {

    if(dateIni == null || dateEnd == null || persona?.id == null) return null

    lsResumen= find(Kardex,'material.codigo, material.nombre, sum(entradaCantidad),sum(salidaCantidad): almacen.id=? and persona.id=? and fecha between ? and ? group by material.id order by material.id',almacenId, persona.id, dateIni, toMidnight(dateEnd))

    return find(Kardex,'almacen.id=? and persona.id=? and fecha between ? and ? order by id',almacenId, persona.id, dateIni, toMidnight(dateEnd))
  }

  public List complete(String value) { return completeLike(Persona,'nombre',value) }

  public Converter getConverter() { return converterLike(Persona) }

}
